package demo;

import java.io.BufferedReader;  
import java.io.FileReader;  
import java.io.IOException;  
import java.util.ArrayList;  
import java.util.Comparator;  
import java.util.List;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
import java.util.stream.Collectors;  
 
/*
 * 作业2：修改文件中的数据
假设文件中的数据是 :2-1-9-4-7-8
对数据进行排序了，然后把数据写回文件
1-2-4-7-8-9
用流式表达式来做.
 */
public class Extra_2_sort {  
    public static void main(String[] args) {  
        List<String> lines = new ArrayList<>();  
        try (BufferedReader br = new BufferedReader(new FileReader("d:\\sort.txt"))) {  
            String line;  
            while ((line = br.readLine()) != null) {  
                lines.add(line);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
  
        // 使用正则表达式提取每行开头的数字，并按照这个数字排序  
        Pattern pattern = Pattern.compile("^(\\d+)\\."); // 匹配行首的数字和点  
        List<String> sortedLines = lines.stream()  
                .sorted(Comparator.comparingInt(line -> {  
                    Matcher matcher = pattern.matcher(line);  
                    if (matcher.find()) {  
                        return Integer.parseInt(matcher.group(1)); // 提取数字并转换为整数  
                    } else {  
                        // 如果行不匹配，返回最大值作为排序依据，将它们放在结果末尾  
                        return Integer.MAX_VALUE;  
                    }  
                }))  
                .collect(Collectors.toList());  
  
        // 打印排序后的结果  
        sortedLines.forEach(System.out::println);  
    }  
}